package com.leetcode.www;

import java.util.LinkedList;
import java.util.Queue;

/**
 * Creared with IntelliJ IDEA.
 * Description:写一个 RecentCounter 类来计算特定时间范围内最近的请求。
 *
 * 请你实现 RecentCounter 类：
 *
 * RecentCounter() 初始化计数器，请求数为 0 。
 * int ping(int t) 在时间 t 添加一个新请求，其中 t 表示以毫秒为单位的某个时间，并返回过去 3000 毫秒内发生的所有请求数（包括新请求）。确切地说，返回在 [t-3000, t] 内发生的请求数。
 * 保证 每次对 ping 的调用都使用比之前更大的 t 值。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/number-of-recent-calls
 * User:yxd
 * Date:2022-01-16
 * Time:23:06
 */
class RecentCounter {
    public Queue<Integer> qu;
    public RecentCounter() {
        qu = new LinkedList<>();
    }

    public int ping(int t) {
        if(t == 0)return 0;//刚开始0秒 没有请求

        qu.offer(t);//放入请求
        while(qu.peek() < t - 3000){//只要请求的时间在[t-3000,t]内的都可以把其他的全都出队
            qu.poll();

        }
        return qu.size();//剩下的就是范围内的

    }
}
public class Normal933 {
    public static void main(String[] args) {
        RecentCounter recentCounter = new RecentCounter();
        System.out.println(recentCounter.ping(1));
        System.out.println(recentCounter.ping(2));
        System.out.println(recentCounter.ping(3000));
        System.out.println(recentCounter.ping(3002));

    }

}
